Position determination systems and methods utilizing error of multiple candidate positions

ABSTRACT

Examples of systems and methods described herein may be used to track a tagged object through a scene. Techniques are described herein to calculate a position of the tag using wireless communication with multiple anchor devices. In some examples, the anchor devices may be self-localizing, e.g., they may dynamically determine their position and relationship to one another. In some examples, position of a tag may be calculated by calculating multiple candidate positions using different localization techniques—such as geometric localization techniques and/or optimization-based techniques. An error may also be identified associated with each candidate position. A final position may be determined for the tag based on the errors associated with the candidate positions (e.g., the candidate position with the smallest error may be utilized as the position, e.g., the determined position, of the tag).

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application is a divisional of U.S. application Ser. No. 16/999,960filed Aug. 21, 2020, which claims the benefit under 35 U.S.C. § 119 ofthe earlier filing date of U.S. Provisional Application No. 62/889,976filed Aug. 21, 2019, the entire contents of which are herebyincorporated by reference in their entirety for any purpose.

STATEMENT REGARDING RESEARCH & DEVELOPMENT

This invention was made with government support under ContractCNS-1742899 awarded by the National Science Foundation. The governmenthas certain rights in the invention.

TECHNICAL FIELD

Examples described herein relate generally to position determinationtechniques and systems which take error into account. Examples describedinclude self-localizing systems of anchor devices which may be used totrack a tagged object through a scene.

BACKGROUND

Wireless indoor localization systems are being increasingly deployedwithin buildings to address personnel and asset tracking challenges.Installation of these system is often time-consuming and expensive asstatically mounted devices must be precisely placed within the space toserve as fixed reference points to localize personnel moving within.Consequently, even though these systems can save lives by enabling firstresponders to quickly locate trapped or injured victims duringemergencies such as building fires or earthquakes, the upfrontinstallation requirement constitutes a barrier to broad adoption. Forfirst responders this translates to increased risk during emergencies asthey are relegated to leveraging the same building traversal andoccupant search protocols used since the 19th century.

Despite limited information about the floor plan or hazardous conditionswithin buildings that are on fire, firefighters often rush inside torescue victims and suppress structure fires. In doing so, fire responseteams must not only find the source of the fire, but they must be ableto find their way out of the building. Despite undergoing rigoroustraining on indoor navigation protocols, firefighters can still becomedisoriented while traversing complex buildings in smoke-filled,zero-visibility conditions. While they carry radios that can be used tohelp guide them out of the building if they become lost, their actuallocation within the building may not be clear, even to themselves. Inthe worst case scenario, hundreds of firefighters have died withinburning buildings during response operations due to disorientation orinjury.

SUMMARY

Examples of methods are described herein. An example method may includecollecting a set of ranges, each of the set of ranges corresponding to arange between a particular device and a respective anchor device of aplurality of anchor devices. The method may also include calculating afirst candidate position of the particular device based on the set ofranges using a geometric localization technique. The method may alsoinclude estimating error associated with the first candidate position.The method may also include calculating a second candidate position ofthe particular device and error associated with the second candidateposition using an optimization-based technique, based on residual errorsrelative to each of the plurality of anchor devices. The method may alsoinclude selecting a determined position for the particular device basedon the error associated with the first candidate position and the errorassociated with the second candidate position.

In some examples, a method may further include collecting a set ofpositions for the plurality of anchor devices, and using the geometriclocalization technique may be further based on the set of positions.

In some examples, a method may further include selecting a subset of theplurality of anchor devices for use in the geometric localizationtechnique based on positions of the plurality of anchor devices, noisein a respective communication channel to each of the plurality of anchordevices, or combinations thereof.

In some examples, a method may include utilizing positions of moreanchor devices than the subset of the plurality of anchor devices toestimate the error associated with the first candidate position.

In some examples, using a geometric localization technique may includeusing lateration.

In some examples, the method may further include updating the firstcandidate position and the second candidate position based on previouspositions of the particular device to provide a smoothed first candidateposition and a smoothed second candidate position. Some examples mayinclude calculating error associated with the smoothed first candidateposition and the smoothed second candidate position.

In some examples, selecting a determined position is further based onerror associated with the smoothed first candidate position and thesmoothed second candidate position.

In some examples, a method may include deploying the plurality of anchordevices about a scene.

In some examples, a method may include self-localizing at least one ofthe plurality of anchor devices when the at least one of the pluralityof anchor devices is stationary.

Examples of systems are described herein. An example system may includea plurality of anchor devices. Each anchor device may include atransceiver, and a processor coupled to the transceiver and configuredto self-localize a respective anchor device to determine a position ofthe respective anchor devices. The example system may include a tag. Thetag may include a tag transceiver configured to communicate with theplurality of anchor devices, and a tag processor coupled to the tagtransceiver and configured to determine a position of the tag using therespective positions of the plurality of anchor devices. The tagprocessor may be configured to calculate multiple candidate positionsusing geometric localization techniques, optimization techniques,smoothing techniques, or combinations thereof and errors associated witheach of the multiple candidate positions. The tag processor may furtherbe configured to select the position of the tag based on the errorsassociated with each of the multiple candidate positions.

Some example systems may include a display device in communication withthe tag and configured to display an indication of the tag in accordancewith the position. In some example systems, the display device may beconfigured to display the position of the tag together with a floorplanof a building in which the tag is deployed.

In some example systems, the plurality of anchor devices may each beconfigured to self-localize responsive to a determination that arespective anchor device is stationary.

In some example systems, the tag processor may be configured todetermine a first candidate position of the tag using a geometriclocalization technique and a second candidate position of the tag usingan optimization technique.

Another example method may include deploying self-localizing devicesabout a scene, the self-localizing devices configured to identify asanchor devices and determine positions of the anchor devices. Theexample method may further include moving about the scene carrying atag, the tag configured to communicate with the anchor devices anddetermine a position of the tag at least in part by calculating multipleestimated positions of the tag and error associated with each of themultiple estimated positions. The example method may further includetracking the position of the tag on a display device.

Some example methods may include communicating with the tag or an objectcarrying the tag based on the position of the tag.

In some example methods, deploying the self-localizing devices comprisesthrowing at least one self-localizing device into a building, and theself-localizing device may be configured to determine its position afterit comes to rest.

In some example methods, moving about the scene carrying a tag compriseswalking through a building.

In some example methods, the tag may be configured to calculate a firstestimated position using a geometric technique and a second estimatedposition using an optimization technique.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic illustration of a system arranged in accordancewith examples described herein.

FIG. 2 is a schematic illustration of an anchor device and/or a tagarranged in accordance with examples described herein.

FIG. 3 is a schematic illustration of a two-way ranging protocol whichmay be utilized to obtain a range in accordance with examples describedherein.

FIG. 4 is a schematic illustration of a localization pipeline 400arranged in accordance with examples described herein.

FIG. 5 is a schematic illustration of a state machine for operationalstates of anchor devices arranged in accordance with examples describedherein.

DETAILED DESCRIPTION

Indoor localization systems could help mitigate the risk of becominglost within buildings. These systems may provide the capability to trackand localize personnel within environments where access to GPS satellitesignals is unavailable and/or unreliable. Most indoor positioningsystems include two sets of radio-based devices, anchors and tags.Anchors conventionally must be installed in fixed, known locationsdistributed across a space. Tags are usually attached to people orobjects that move within the space. As tagged people or objects movewithin the space, messages are exchanged over specific radio frequenciesto identify the locations of proximate anchors as well as the distancesbetween the tag and set of anchors. The distances and anchor locationsare then used to calculate tag locations using geometric laterationmethods or using optimization techniques. Locations in two or threedimensions can be identified depending on the number of anchorsreferenced. The use of transceivers such as Ultra-Wide Band (UWB) mayprovide systems capable of centimeter-level tracking precision. RF-basedsystems traditionally may use statically-placed anchors within an indoorspace with known, fixed locations.

For fire response operations and other applications, the use of anindoor positioning system could potentially save lives, cost, time,and/or otherwise improve outcomes. However, there may be severalchallenges. First, few buildings incorporate anchor devices that can beused to track occupants outfitted with tags. There are also manydifferent communication transceivers that can be used for ranging byindoor positioning systems. For example, systems may use Bluetooth,Wi-Fi, Ultrasonic, or UWB-based devices. This means that firefightersmay have to be outfitted with bulky tags that could be configured onarrival to work with existing installed systems. Moreover, firefightersoften shut off the electrical power for buildings on fire, which couldrender installed indoor positioning anchors inoperable during theresponse operation. Consequently, static anchors installed a priori infixed locations to track occupants may limit the use of indoorlocalization techniques by first responders and others.

Despite the practical uses, particularly during emergency events such asbuilding fires, the limitations of current indoor positioning systemsare inhibiting widespread deployment. The upfront cost to preciselyinstall and configure anchors within indoor spaces is difficult andburdensome. In some cases, a complete mapping of a building must becompleted as well as the locations of all installed devices measured tocentimeter-level accuracy. Even after installation, all device locationsmust be maintained in some examples to accurately calculate thelocations of tags within the space. Any device that is moved, eventemporarily, would radically impact the resultant localization of tags.This means that when a building is renovated or reconfigured, devicesthat are not returned to their exact location can potentially impact thefunctionality of the system.

Finally, because anchors must traditionally be statically installedwithin a space, such systems are impractical to use by firefightersresponding to emergencies within complex buildings. To be useful tofirefighters, an indoor positioning system would have be able toself-configure by leveraging dynamically deployed anchor devices.

Examples described herein include self-localizing anchor devices thatcan be dynamically deployed as reference points for localizing tagswithin a scene, including an indoor space in some examples. These anchordevices may alleviate and/or reduce the need for costly installation andconfiguration of statically placed anchors. Firefighters or other usersmay rapidly deploy anchor devices upon arrival to a scene, e.g., afireground, and as they enter and traverse unknown buildings or otherareas. These devices may be designed to transition between multipleoperating states, allowing each device to determine its position beforeserving as a reference point for tagged objects moving within a space.Devices may be moved during a fire response or other event, so exampledevices herein may include a mechanism to detect when a device changespositions. Should a device detect that it has been moved, it may ceaseto operate as a reference anchor and may recalculate through a series ofranging operations before resuming operation as an anchor device (e.g.,a reference anchor). As these devices may be self-managed in terms ofdynamically identifying and updating their positions, even when moved ata later time, they may be referred to as dynamic anchors or dynamicanchor devices.

Moreover, the accuracy of position determinations of tags is important.Any position calculation may be subject to a certain amount of error.Dynamic determination of the position of anchor devices may in someexamples contribute to that error. Accordingly, examples describedherein may utilize error associated with position determinations infinally determining a position of a tag.

Certain details are set forth herein to provide an understanding ofdescribed embodiments of technology. However, other examples may bepracticed without various of these particular details. In someinstances, well-known circuits, control signals, timing protocols,computing components, and/or software operations have not been shown indetail in order to avoid unnecessarily obscuring the describedembodiments. Other embodiments may be utilized, and other changes may bemade, without departing from the spirit or scope of the subject matterpresented here.

Examples of systems and methods described herein may be used to track atagged object through a scene. Techniques are described herein tocalculate a position of the tag using wireless communication withmultiple anchor devices. In some examples, the anchor devices may beself-localizing, e.g., they may dynamically determine their position andrelationship to one another. In some examples, position of a tag may becalculated by calculating multiple candidate positions using differentlocalization techniques—such as geometric localization techniques and/oroptimization-based techniques. An error may also be identifiedassociated with each candidate position. A final position may bedetermined for the tag based on the errors associated with the candidatepositions (e.g., the candidate position with the smallest error may beutilized as the position, e.g., the determined position, of the tag).

Systems described herein may find use in applications providing thetracking of a tagged object through a scene. For example, a firefighteror other emergency responder may carry a tag and a commander or otheruser may monitor their position as they traverse a building or otherrecovery area. Emergency response applications may make advantageous useof the ability to dynamically set up networks of anchor devicesdescribed herein. For example, arriving firefighter(s) may deploy anchordevices about a scene on arrival, and the anchor devices may dynamicallyestablish connectivity such that the anchor devices may be used todetermine the position of tagged objects described herein.

Examples described herein may allow for the dynamic deployment ofdevices that can self-localize and quickly establish a highly accurateand scalable positioning system, which may be wholly or partially anindoor positioning system. Example systems may be used to trackfirefighters as they enter and traverse burning buildings withoutrelying on existing infrastructure. Unlike current systems that rely onprecise, manual placement of anchor devices for ranging and staticassignment of role as either tag or anchor, examples described hereinmay allow devices to simply be activated and left in an area. Eachdevice is designed to self-localize and operationally transition betweenranging roles dynamically based on the evolving requirements of thelocalization system. Systems described herein may be rapidly deployed inor around any building and automatically establish a highly accurate,indoor localization system.

FIG. 1 is a schematic illustration of a system arranged in accordancewith examples described herein. The system of FIG. 1 includes commander102, scene 104, anchor device 106, anchor device 108, anchor device 110,anchor device 112, display device 114, firefighter 116, tag 118, andfire truck 120. Additional, fewer, and/or different components may beused in other examples. Generally, the anchor devices (e.g., anchordevice 106, anchor device 108, anchor device 110, and anchor device 112)may be deployed about scene 104 by firefighter 116 and/or commander 102on arrival at the scene 104 (e.g., arrival in fire truck 120). Thefirefighter 116 may carry (e.g., wear) tag 118. Tag 118 may communicatewith one or more of the anchor devices and determine its position usingtechniques described herein. Display device 114 may display a positionof the tag 118 (e.g., a position of the firefighter 116) as the tag 118moves through the scene 104.

Examples of systems described herein accordingly may include one or moreanchor devices, such as anchor device 106, anchor device 108, anchordevice 110, and anchor device 112 of FIG. 1 . Anchor devices generallyrefer to devices that serve as reference points for use in localizing atag. While historically, anchor devices may have been deployed at known,fixed locations, examples of dynamic anchor devices are described andmay be used herein. Generally, a Cartesian coordinate system may be usedwhere a reference point in a scene (and/or one of the anchor devices)may be selected as an origin (0,0), and anchor devices may determinetheir position relative to that origin. The anchor positions may then beused to calculate locations of tags. Generally, at least three anchordevices may be used for two dimensional localization. In systemsproviding three dimensional localization, at least four anchor devicesmay generally be used. Any number of anchor devices may be providedabout the scene. Anchor devices may generally be spaced apart such thata tag traversing through the scene may maintain communication withmultiple anchor devices as the tag moves through the scene. In someexamples, anchor devices may be positioned within 20 meters of eachother, within 15 meters of each other in other examples, within 25meters of each other in other examples. Other distances may also beused.

Anchor devices may generally include one or more transceivers forwireless communication, and one or more processing units (e.g.,microcontrollers, processors, or other circuitry) to allow the anchordevice to perform functions described herein. Anchor devices may includeone or more antennas, transceivers, inertial measurement units, powerlevel indicator, power source (e.g., battery), and/or one or moresensors (e.g., light, temperature, humidity, particulate).

In some examples, anchor devices may be deployed on arrival at a scene(e.g., by throwing, placing, or otherwise positioning the devices inlocations around a scene and/or within buildings of the scene). In someexamples, one or more anchor devices may be positioned on or carried bya vehicle, such as fire truck 120. Accordingly, the anchor devices maynot be positioned in a known location. Examples of anchor devicesdescribed herein may accordingly self-localize—e.g., determine theirposition.

Examples of systems described herein may include one or more tags, suchas tag 118 of FIG. 1 . Tags are generally designed to move within ascene. A tag may be implemented as an electronic device that may becarried (e.g., worn, attached to, held by) by a user or other moveableobject intended for tracking by systems described herein. In the exampleof FIG. 1 , the tag 118 may be worn by firefighter 116. Tags maygenerally include one or more transceivers for wireless communication,and one or more processing units (e.g., microcontrollers, processors, orother circuitry) to allow the tags to perform functions describedherein. Tags may include one or more antennas, transceivers, inertialmeasurement units, power level indicator, power source (e.g., battery),and/or one or more sensors (e.g., light, temperature, humidity,particulate). In general, tags may include the same and/or analogouscomponents to anchor devices described herein. Tags and anchor devicesmay in some examples be interchangeable. While a single tag is shown inFIG. 1 , any number may be used and in some examples may besimultaneously tracked in systems described herein.

Examples of tags described herein may communicate with one or moreanchor devices to determine a position of the tag. The position of thetag may then be transmitted by the tag, e.g., to the display device 114of FIG. 1 and/or another computing device. Advantageously, examples oftags described herein may calculate position in a manner that takesaccount of error associated with the position calculation. For example,tags may calculating multiple candidate positions (e.g., multipleestimated positions) for the tags, and an error associated with eachcandidate position. The tag may then select (e.g., transmit, report) acandidate position as the tag position based on the errors (e.g., thecandidate position associated with the lowest error may be selected insome examples).

Tags described herein, such as tag 118, may generally collect (e.g.,obtain) a set of ranges corresponding to ranges between the tag and eachof the anchor devices in communication with the tag. For example, thetag 118 may collect a range between tag 118 and anchor device 108, arange between tag 118 and anchor device 110, and a range between tag 118and anchor device 112. Using this set of ranges, the tag 118 maycalculate a position of the tag 118. In some examples, a tag, such asthe tag 118, may calculate one candidate position using a geometriclocalization technique (e.g., lateration). The geometric localizationtechnique may utilize positions of the anchor devices in communicationwith the tag. The tag may calculate another candidate position using anoptimization-based technique. The optimization-based technique mayutilize residual errors relative to each of the anchor devices. The tagmay further estimate (e.g., calculate) an error associated with eachcandidate position. The tag may select a candidate position as thefinal, determined position of the tag based on the errors associatedwith the candidate positions (e.g., the candidate position with thelowest associated error may be selected as the determined position ofthe tag).

In some examples, tags described herein may utilize smoothing techniquesto refine candidate positions. Smoothing techniques may generally updatea candidate position based on previous determined positions for the tag.For example, candidate positions calculated in accordance with geometriclocalization and/or optimization-based techniques may be updates basedon previous positions of the tag to provide smoothed candidatepositions. Error associated with the smoothed candidate positions may beestimated (e.g., calculated). The final determined position may be basedon the error associated with the smoothed candidate positions.

Tags described herein, such as tag 118 of FIG. 1 may calculate theirposition multiple times as the tag moves around a scene. In someexamples, tags may calculate position at a fixed interval (e.g., everysecond, every minute, etc.). In some examples, tags may calculateposition when motion of the tag is detected by the tag and/or after athreshold amount of movement is detected by the tag (e.g., based oninertial sensor measurements and/or changes in range measurementsobtained from anchor devices). Tags may transmit their determinedposition once and/or periodically over time to another computing device.For example, the tag 118 of FIG. 1 may transmit its determined positionto the display device 114.

As a tag moves through a scene, the anchor devices it is incommunication with may change. Accordingly, different sets of anchordevices may be used in the position calculation over time. The tag mayobtain a set of positions for each anchor device in communication withthe tag. For example, the tag 118 may obtain (e.g., through wirelesscommunication) a position for anchor device 106, a position for anchordevice 108, a position for anchor device 110, and a position for anchordevice 112. The positions may be utilized in a geometric localizationtechnique as described herein to calculate a candidate position. In someexamples, a tag may select a subset of available anchor devices for usein the geometric localization technique. The selection may be based, forexample, on noise in a respective communication channel to each of theplurality of anchor devices. For example, anchor devices may be selectedwhich have the least amount of noise in the communication channelbetween the respective anchor device and the tag. When three dimensionallocalization is desired, generally at least four anchor devices may beselected. When two dimensional localization is used, generally at leastthree anchor devices may be selected. In the example of FIG. 1 , the tag118 may evaluate noise in a communication channel to the anchor device106, noise in a communication channel to the anchor device 108, noise ina communication channel to the anchor device 110, and noise in acommunication channel to the anchor device 112. The three anchor devicesassociated with the least communication channel noise may be selectedfor two dimensional localization. In some examples, more than fouranchor devices may be present, and four anchor devices may be selectedfor three dimensional localization in accordance with techniquesdescribed herein (e.g., closest anchor devices, least communicationchannel noise, etc.). While a subset of anchor devices may be used tocalculate candidate positions, in some examples a greater number thanthe subset of anchor devices may be used to estimate the errorassociated with the candidate position. So, for example, if four anchordevices are used to calculate a candidate position, in some examplesfive or more anchor devices may be used to estimate the error associatedwith the candidate position.

Any of a variety of applications may utilize the received position ofthe tag. For example, the display device 114 may display the position ofthe tag. In some examples, the display device 114 may display a trackedposition of the tag over time. In some examples, the display device 114may display the tracked position of the tag relative to features of thescene—for example the display device 114 may display the position of thetag 118 over time together with a floorplan or layout of a house in thescene 104—such that a position of the firefighter 116 in the house overtime may be observed. A user of the display device 114 (e.g., commander102) may accordingly observe the position of the firefighter 116. Thecommander 102 may utilize the display device 114 or other communicationdevices, to provide input and/or feedback to the firefighter 116 (e.g.,instructions on how to move through the building, how to exit thebuilding).

While an example of a firefighter has been described with respect toFIG. 1 , other emergency response personnel may additionally or insteadmake use of the system—e.g., emergency medical technicians, lawenforcement). While the scene 104 of FIG. 1 is depicted as a house, anyof a variety of scenes may be used—e.g., outdoor areas, buildings,hospitals, schools, hotels, ski or other recreation areas. Systemsdescribed herein may be used to efficiently locate tagged people and/orother objects in those scenes—e.g., employees, visitors, guests, users,children, and/or pets. Accordingly, systems described herein may bewholly and/or partially indoor positioning systems that may track atagged object within an indoor location.

During operation of the system in FIG. 1 , the firefighter 116 andcommander 102 may arrive at the scene in fire truck 120. Of course,other numbers of individuals and/or vehicles may arrive in otherexamples. One or both of the commander 102, firefighter 116, or otherindividuals may deploy anchor devices, such as anchor device 106, anchordevice 108, anchor device 110, and anchor device 112 about the scene.The anchor devices may be placed, thrown, scattered, dropped, etc. Insome examples, drones may be used to autonomously place and/or dropanchor devices about a scene. The anchor devices may identify as anchordevices and self-localize as described herein once they are stationaryin some examples.

Once the anchor devices have been positioned and self-localized, anindividual or other object carrying a tag, such as firefighter 116carrying tag 118, may be tracked. For example, the firefighter 116 maymove (e.g., walk) through a building in the scene 104. The tag 118 maycommunicate with the anchor devices and/or a subset of anchor devices todetermine candidate positions and errors associated with thosepositions, and determine a final determined position based on the errorsassociated with the candidate positions. The determined position and/ormultiple determined positions over time may be tracked, e.g., using thedisplay device 114 of FIG. 1 .

FIG. 2 is a schematic illustration of an anchor device and/or a tagarranged in accordance with examples described herein. The device 200 ofFIG. 2 may be implemented as either an anchor device and/or tag. Forexample, the device 200 may be used to implement anchor device 106,anchor device 108, anchor device 110, anchor device 112, and/or tag 118of FIG. 1 . The device 200 includes transceiver(s) 202, processor(s)204, memory 206, inertial measurement unit 208, power source(s) 210, andsensor(s) 212, antenna 214. Additional, fewer, and/or differentcomponents may be used in other examples. Generally, the componentswhich may be utilized for anchor devices and tags described herein maybe similar and/or the same. Configuration parameters particular to ananchor device and/or a tag may be stored on the device, such as inmemory 206.

Examples of anchor devices and/or tags described herein may include oneor more antennas, such as antenna 214 of FIG. 2 . The antenna 214 may beused for wireless communication between devices described herein. Forexample, the antenna 214 may be used for communication between a tag andan anchor device. The antenna 214 may be used for communication betweenanchor devices. The antenna 214 may be used for communication between atag and/or an anchor device and another computing device (e.g., displaydevice 114 of FIG. 1 ). In some examples, switched phase antenna arraysmay be used. In examples having multiple antennas, in some examplesrather than or in addition to collecting sets of ranges between the tagand multiple anchor devices to compute candidate tag positions, tags mayobtain sets of ranges and angle of arrival information for multipleanchor devices. Accordingly, in some examples fewer anchor devices maybe used if both range and angle of arrival information between an anchordevice and a tag (and/or between anchor devices) may be utilized inlocalizing a tag and/or an anchor device.

Examples of anchor devices and/or tags described herein may includingone or more transceivers, such as transceiver(s) 202 of FIG. 2 . Thetransceiver(s) may be coupled to antenna(s) of the device, and may beutilized for wireless communication between devices. The transceiversmay utilize any of a variety of protocols, and in some examples multipletransceivers are provided to support multiple protocols and/or a singletransceiver may support multiple protocols. Examples of protocols whichmay be used include, but are not limited to, ultra wideband (UWB),ultrasonic (e.g., 20 kHz-22 kHz), Bluetooth, Wi-Fi (both Bluetooth andWi-Fi may operate in the 2.4 GHz spectrum), and/or operation in thesub-gigahertz range (e.g., 400 MHz and 900 Mhz ranges).

Examples of anchor devices and/or tags described herein may include oneor more processors, such as processor(s) 204 of FIG. 2 . The processorsmay be implemented using, for example, one or more central processingunits (CPUs), graphics processing units (GPUs), processor cores,controllers, microcontrollers, and/or other circuitry (e.g., applicationspecific integrated circuitry (ASICs) and/or field programmable gatearrays (FPGAs)). The processors may be configured (e.g., usingexecutable instructions stored on computer readable media, such asmemory 206, and/or stored configuration parameters and/or circuitrydesign) to perform actions described herein. In this manner, devicesdescribed herein may be implemented in hardware, software, firmware, orcombinations thereof. Anchor devices described herein may utilizeprocessor(s) to, for example, determine the device is stationary (e.g.,once it comes to rest) and self-localize the anchor device. Tagsdescribed herein may utilize processor(s) to, for example, determine aposition of the tag using positions of multiple anchor devices. Theprocessor(s) in a tag may be used to calculate multiple candidatepositions using geometric localization techniques, optimizationtechniques, smoothing techniques, or combinations thereof. Theprocessor(s) in a tag may be used to estimate (e.g., calculate) errorsassociated with each of the multiple candidate positions. Theprocessor(s) in a tag may further be used to select the position of thetag based on the errors associated with each of the multiple candidatepositions. Executable instructions and/or configuration parameters forperforming these actions may be stored, for example, in the memory 206.

Examples of anchor devices and/or tags described herein may includecomputer readable media, such as memory 206. While a single memorydevice, memory 206 is shown in FIG. 2 , any number may be present an inelectronic communication with processor(s) 204 in any manner. Examplesof memory which may be used include random access memory (RAM),read-only memory (ROM), programmable memory, solid state drives (SSDs),other disk drives, SD cards, etc.

Examples of anchor devices and/or tags described herein may include aninertial measurement unit, such as inertial measurement unit 208 of FIG.2 . The inertial measurement unit 208 may be coupled to processor(s)204. The inertial measurement unit 208 may measure and/or report force,angular rate, and/or orientation of the device 200. For example, theinertial measurement unit 208 may include one or more accelerometers,gyroscopes, and/or magnetometers. The inertial measurement unit 208 maybe utilized in some examples in self-localizing the device 200.

Examples of anchor devices and/or tags described herein may include oneor more power sources, such as power source(s) 210 of FIG. 2 . The powersources may power any or all of the components of the device 200including, but not limited to, the processor(s) 204, transceiver(s) 202,memory 206, inertial measurement unit 208, and/or sensor(s) 212. Thepower sources may be implemented using one or more batteries, wiredpower connections, wireless charging interfaces, and/or energyharvesting circuitry.

Examples of anchor devices and/or tags described herein may include oneor more sensors, such as sensor(s) 212. The sensor(s) 212 may be coupledto and/or in communication with processors of the device, such asprocessor(s) 204. Sensor data may be used for localizing the deviceand/or may be used to report sensor data that may be communicated toother devices (e.g., anchor devices, tags, display devices, and/or otherdevices described herein). Examples of sensors which may be used includeIR sensors, light sensors, temperature sensors, humidity sensors, and/orparticulate sensors. While in some examples, the sensor(s) 212 mayutilize processor(s) 204 and/or transceiver(s) 202 to communicate datato other device, in some examples the sensor(s) 212 may include theirown communication interface (e.g., Bluetooth interface) forcommunication with other devices.

To calculate a position of a tag, systems described herein may obtain aset of ranges. For example, a range (e.g., distance) between the tag andeach of a plurality of anchor devices may be obtained. Any of a varietyof ranging techniques may be used to obtain this set of ranges. In ananalogous manner, ranging techniques described herein may be used todynamically obtain a range between an additional anchor device and anexisting anchor device when the anchor devices are being set up.

Multiple protocols may be used for estimating ranges between wirelessdevices (e.g., between anchor devices and/or between a tag and one ormore anchor devices). One approach may use an estimate of the powerreceived during a wireless message exchange as a proxy for distance.This approach may be referred to as Received Signal Strength (RSS).While RSS techniques may be used in examples described herein, RSSdistance estimation may utilize a priori calibration of device powertransmission levels and may be susceptible to signal attenuation withinindoor spaces. Without careful mapping of potential obstacles thatinterfere with signal propagation, systems that estimate distance basedon RSS may be error-prone.

Another approach is to use Time Difference of Arrival (TDoA). In TDoAsystems, anchors broadcast messages on a common communication channelshared with tags. Upon receipt, tags measure the transmission time ofthe message to estimate distance. By broadcasting to all tags, themessage protocol overhead may be reduced and/or minimized. While TDoAtechniques may be used in systems described herein, this techniques mayutilize tight clock synchronization between all devices within thesystem to accurately estimate distances at high precision. Ensuringclocks are synchronized often utilizes a secondary, low-latencycommunication network between anchor devices to periodic correct clocksdue to skew and drift. This may increase the cost and/or complexity ofinfrastructure using anchors.

Another approach may be referred to as two-way ranging (TWR). TWR usesmessages exchanged between devices to estimate the distance betweendevices. Anchors and tags each track the times that message aretransmitted and received over a consecutive sequence of messages. Byexchanging multiple messages, the computational time used for sendingand receiving devices can be isolated from the total message exchangetime. This allows the total message transit time to be quantified acrossmultiple exchanges, which can then be used to estimate the distancebetween two devices and may reduce and/or eliminate the need for clocksynchronization. To reduce and/or minimize message handling delays,ranging messages may be incorporated into a layer-two (L2) networkprotocol.

Examples described herein may utilize TWR to obtain a range between twodevices. For example, the tag 118 of FIG. 1 may utilize two-way rangingto obtain a range to anchor device 106, a range to anchor device 108, arange to anchor device 110, and/or a range to anchor device 112. Forexample, the processor(s) 204 of FIG. 2 , together with transceiver(s)202, may perform two-way ranging.

FIG. 3 is a schematic illustration of a two-way ranging protocol whichmay be utilized to obtain a range in accordance with examples describedherein. In the example of FIG. 3 , messages are shown exchanged betweentag 302 and anchor device 304 to determine a range (e.g., distance)between tag 302 and anchor device 304. The protocol of FIG. 3 may beused to find a range between the tag 118 of FIG. 1 and any or all of theanchor devices of FIG. 1 , for example. Moreover, the protocol of FIG. 3may be used in some examples to find a range between anchor devices. Forexample, the processor(s) 204 and/or transceiver(s) 202 may be utilizedto send and/or receive the messages shown as being sent and received bythe tag 302. Other processor(s) and/or transceivers of an anchor device,analogous to those described with reference to FIG. 2 , may be used tosend and/or receive the message shown as being send and received by theanchor device 304.

The ranging protocol of the example of FIG. 3 uses a total of fourmessages exchanged between anchor device 304 and tag 302. Other numbersof messages may be used in other examples. These messages include astart message (e.g., RANGE_START of FIG. 3 ) used to initiate a rangingtransaction with an anchor device, an acknowledge message (e.g.,RANGE_ACK of FIG. 3 ) to respond to the initiation of a rangingtransaction, a range message (e.g., RANGE of FIG. 3 ) to complete themessage exchange to allow for distance estimation, and a completemessage (e.g., RANGE_COMPLETE of FIG. 3 ) that transmits the estimatedrange back to the initiating tag.

A successful ranging transaction utilizes successful transmission andreceipt of messages by communicating devices. Devices operating as tagsdescribed herein drive ranging transactions; anchor devices describedherein respond to ranging requests, but generally do not initiateranging transactions. Examples of ranging protocols described hereinaccordingly operate point-to-point between two devices. In this manner,ranging transactions are directed to specific anchors, based onaddresses assigned to anchor devices. Anchor devices may only respond tomessages encoded with a matching destination address. As a consequence,tags described herein may maintain a list or other data collection ofnearby anchors to initiate ranging transactions with. Unlike some otherproposed ranging protocols that incorporate a periodic message broadcastto discover nearby anchors, examples described herein may forego thisfeature to increase and/or maximize channel bandwidth for rangingtransactions. Tags may receive periodic updates to the list or datacollection of anchor devices to range with within a space from amanagement data plane. This communication plane may operate over ahigher-bandwidth WiFi-based mesh network which may runs concurrently ondevices of systems described herein, such as the system of FIG. 1 . Thisensures UWB may be reserved for ranging transactions. For example, tag118 of FIG. 1 may include a transceiver operational to communicate usinga Wi-Fi protocol to receive management plane data from anchor devicesand/or other computing devices in communication with the tag 118 (e.g.,one or more server devices, not depicted in FIG. 1 ). The tag 118 mayadditionally include the same or an additional transceiver operationalto communicate using UWB with one or more anchor devices in the systemto obtain a range to the anchor device.

Referring to FIG. 3 , the protocol includes a start message—RANGE-STARTas shown in FIG. 3 . Ranging transactions may be tag-initiated bytransmission of the start message to a particular anchor. Each tag maycreate a new message with the address of the specific anchor to rangewith. The start message type may be encoded by the tag into the messageindicating the tag is starting a new ranging transaction. Afterconfirming the successful transmission of the start message onto thechannel (e.g., UWB channel), a time stamp of the transmission time,identified by T_(TXRS) in FIG. 3 is captured and stored by the tag 302.The tag 302 then configures a timeout and places the transceiver intoreceive mode. The timeout may, for example, be a set time after thestart message transmission time. If a reply is received from the anchordevice 304 before the timeout expires, the ranging protocol continues tothe next phase. If the timeout expires, the transceiver of the tag 302is taken out of receive mode, state cleared, and a new anchor may bechosen to initiate a new ranging transaction with.

Anchor devices described herein may be designed to remain in receivemode awaiting new ranging requests. When a new start message is receivedby anchor device 304 (e.g., at time T_(RXRS) in FIG. 3 ), thedestination address is checked to ensure the message was bound for theanchor device 304. If the message is not destined for the anchor device304, the receive state on the transceiver of anchor device 304 may becleared and returned to receive mode. If the anchor is the intendedrecipient, the receive time stamp is captured from the transceiver'stime stamp register to denote the precise time it was received. Thistime stamp is shown in FIG. 3 as T_(RXRS). The difference between timestamp of the receipt of the start message at the anchor device 304(e.g., T_(RXRS)) and the time stamp of the transmission from the tag 302(e.g., T_(TXRS)) constitutes the propagation time between devices.

The ranging protocol of FIG. 3 further includes an acknowledge message,RANGE_ACK. An acknowledge message may be sent by anchor device 304 inresponse to receiving a start message from tag 302. Transmission of thismessage may be used for several reasons. First, receipt of this messagealerts the tag 302 of the presence of the anchor device 304. When theacknowledge message is received, the tag 302 is aware the anchor device304 is in range and able to continue the ranging transaction. Second, atime stamp may be captured at transmission time on the anchor device 304and upon receipt of the acknowledge message by the tag 302. These timestamps are shown as T_(TXRA) and T_(RXRA) in FIG. 3 . These time stamps,captured on both tag and anchor sides (e.g., sender and receiver sides),allow for a second measurement of the propagation time between devices.For example, the difference between T_(TXRA) and T_(RXRA) providesanother measurement of the propagation time.

Once an acknowledge message is received by tag 302, the protocol usesthe transmission of an additional message in some examples. A rangemessage (e.g., RANGE in FIG. 3 ) may be transmitted by tag 302 to anchordevice 304. The range message may be transmitted to one or more anchordevices, including anchor device 304 that previously replied with anacknowledge message. The purpose of the range message may be two-fold—tomeasure propagation time between devices a third time and/or to transmitthe time stamps collected by the tag 302 during previous messageexchanges. To measure the propagation time between devices, thetransmission time stamp T_(TXR) is captured by the tag 302 on the senderside and the receive time stamp T_(RXR) is captured by the anchor device304 on the receiver side. To send the transmission time stamp within therange message, the tag 302 may use a delayed transmission feature of theUWB transceiver in the tag 302. By transmitting time stamps to theanchor device 304, the final distance estimate between the tag 302 andthe anchor device 304 can be calculated based on the time stamps of theranging messages as shown in equation 1.

$T_{prop} = \frac{\begin{matrix}{{( {T_{R \times {RA}} - T_{T \times {RS}}} )( {T_{R \times R} - T_{T \times {RA}}} )} -} \\{( {T_{T \times R} - T_{R \times {RA}}} )( {T_{T \times {RA}} - T_{R \times {RS}}} )}\end{matrix}}{\begin{matrix}{( {T_{R \times {RA}} - T_{T \times {RS}}} ) + ( {T_{R \times R} - T_{T \times {RA}}} ) +} \\{( {T_{T \times R} - T_{R \times {RA}}} ) + ( {T_{T \times {RA}} - T_{R \times {RS}}} )}\end{matrix}}$

Either the tag 302 and/or the anchor device 304 may calculate a distancebetween the devices using the timestamp information from messagesexchanged during a ranging protocol.

A complete message shown in the ranging protocol of FIG. 3(RANGE_COMPLETE) may be used to transmit the final estimated range,e.g., determined by equation 1, as well as the anchor coordinates fromthe anchor device 304 to the tag 302. This message may not be used indetermining the distance between devices; rather it facilitates thetransmission of the range, which may be calculated at the anchor device304, to be sent to the tag 302. By aggregating this information at thetag 302, the tag 302 (and other tags in the system) may independentlydetermine its position using one or more localization techniques. Uponreceipt of the complete message, the distance to the anchor device 304may be stored by the tag 302. Although anchors are not expected to move,the tag 302 may check the Cartesian location of the anchor device 304stored locally on the tag 302 is consistent with the location reportedin the complete message. Although UWB may be less susceptible tomulti-path challenges due to the use of impulse-based signaling, rangingerrors are not completely eliminated. Advanced techniques such asadaptive signal filtering can be used to smooth noisy ranges in someexamples.

Accordingly, the protocol of FIG. 3 may be used to collect a rangebetween a tag and an anchor device. In examples described herein, a tagmay collect a set of ranges corresponding to multiple anchor devices.Accordingly, the tag 302 of FIG. 3 may engage in the depicted rangingprotocol with anchor device 304 and with additional anchor devices in asystem to collect a set of ranges. Based on these ranges, the tag 302may utilize localization techniques to calculate a position of the tag302.

Multiple localization techniques are available for use to determine theposition of an object within a space (e.g., of a tag within a scene inexamples described herein). Common among these techniques, distancesfrom multiple reference points, as well as the locations of thosereference points, may be used. Using geometric techniques, the preciselocation of a tagged object may be determined via the intersection ofthe ranges to known reference points. For ranges with error,optimization techniques can be used to identify the most likelyposition.

An overview of example geometric localization techniques andoptimization-based techniques is provided herein by way of explanation.Geometric localization techniques generally refer to techniquesutilizing trilateration (for 2-dimensional localization) orquadrilateration (for 3-dimensional localization) to determine aposition of a tag based on knowledge of the locations (e.g., theCartesian locations) of multiple (e.g., three) anchor devices, and thedistances between the tag and those anchor devices. The distances d1,d2, and d3 between the current tag position (x, y) and anchor devicelocations (x1, y1), (x2, y2), and (x3, y3) may be measured using rangingprotocols, such as those described herein. Using these sets of rangesand known positions of anchor devices, the location of the tag (e.g. x,y) may be calculated by solving the system of equations 2-4.

(x−x ₁)²+(y−y ₁)² =d ₁ ²  Equation 2

(x−x ₂)²+(y−y ₂)² =d ₂ ²  Equation 3

(x−x ₃)²+(y−y ₃)² =d ₃ ²  Equation 4

Given this system of quadratic equations of Equations 2-4, each may beexpanded and then the expanded form of equation 3 may be subtracted fromequation 2 and equation 4 from equation 3. This yields equation 5 andequation 6 respectively.

(2x ₂−2x ₁)x+(2y ₂−2y ₁)y=d ₁ ² −d ₂ ² −x ₁ ² +x ₂ ² −y ₁ ² +y ₂²  Equation 5

(2x ₃−2x ₂)x+(2y ₃−2y ₂)y=d ₂ ² −d ₃ ² −x ₂ ² +x ₃ ² −y ₂ ² +y ₃²  Equation 6

For simplicity, equations 5 and 6 are shown in matrix form. The x and ycoordinates of the unknown tag position may be calculated by solvingequation 5 and equation 6 using Cramer's rule as shown in equations 7and 8. For each of these, the determinant of x, or y, is found, and thendivided by the determinant of the matrix form of equations 5 and 6.

$\begin{matrix}{x = \frac{❘\begin{matrix}{d_{1}^{2} - d_{2}^{2} - x_{1}^{2} + x_{2}^{2} - y_{1}^{2} + y_{2}^{2}} & {2( {y_{2} - y_{1}} )y} \\{d_{2}^{2} - d_{1}^{2} - x_{2}^{2} + x_{3}^{2} - y_{2}^{2} + y_{3}^{2}} & {2( {y_{3} - y_{2}} )y}\end{matrix}❘}{❘\begin{matrix}{2( {x_{2} - x_{1}} )x} & {2( {y_{2} - y_{1}} )y} \\{2( {x_{3} - x_{2}} )x} & {2( {y_{3} - y_{2}} )y}\end{matrix}❘}} & {{Equation}7}\end{matrix}$ $\begin{matrix}{x = \frac{❘{\begin{matrix}{2( {x_{2} - x_{1}} )x} \\{2( {x_{3} - x_{2}} )}\end{matrix}\begin{matrix}{d_{1}^{2} - d_{2}^{2} - x_{1}^{2} + x_{2}^{2} - y_{1}^{2} + y_{2}^{2}} \\{d_{2}^{2} - d_{1}^{2} - x_{2}^{2} + x_{3}^{2} - y_{2}^{2} + y_{3}^{2}}\end{matrix}}❘}{❘\begin{matrix}{2( {x_{2} - x_{1}} )x} & {2( {y_{2} - y_{1}} )y} \\{2( {x_{3} - x_{2}} )x} & {2( {y_{3} - y_{2}} )y}\end{matrix}❘}} & {{Equation}8}\end{matrix}$

Note that the calculated (e.g., estimated) distances between anchordevices and tags, such as those calculated using ranging protocolsdescribed herein, may be inaccurate. This may pose a challenge forgeometric lateration techniques as an exact solution for a tag'sposition may not exist given inaccurate ranges. Consequently,alternative approaches to localization that use optimization-basedtechniques can be used.

Calculating a location using ranging data may be impractical withincomplex indoor spaces, particularly when range estimates between anchordevices and tags are inconsistent. Optimization-based techniquesgenerally refer to techniques which estimate a most likely position of atag based on positions of a set of anchor devices and a set of ranges tothe anchor devices. Examples of optimization-based techniques includenon-linear least squares (NLLS). Optimization-based techniques mayfacilitate localization even in noisy or non-line of sight conditions.Additionally, any number of anchor devices can be used to estimate thetag position. Unlike lateration (e.g., geometric techniques) which canbe considered to solve a system of equations to determine the positionof a tag, optimization-based techniques start with an initial guess ofthe current tag location and calculate the error, or residuals, for eachof the anchor devices. Equation 9 shows residuals for a system ofequations based on locations and distances for n anchor devices.

(x−x ₁)²+(y−y ₁)² −d ₁ ² =r ₁ ²

(x−x ₂)²+(y−y ₂)² −d ₂ ² =r ₂ ²

(x−x _(n))²+(y−y _(n))² −d _(n) ² =r _(n) ²   Equation 9

Tag devices implementing optimization-based techniques may find theCartesian (x,y) position of the tag by finding the position that meets acriteria for the residuals (e.g., minimizes the sum of the squaredresiduals r encoded as x{circumflex over ( )} as shown in equation 10.

$\begin{matrix}{\hat{x} = {\underset{x,y}{argmin}{\sum\limits_{i = 1}^{n}{f(x)}^{2}}}} & {{Equation}10}\end{matrix}$

To solve, a tag may utilize a Levenberg Marquardt Algorithm (LMA) toiteratively find the tag position that satisfies equation 10. Otheralgorithms may be used in other examples. The Levenberg Marquardtalgorithm combines Gradient Descent and Gauss-Newton algorithms byadding a damping factor λ that can be tuned to reduce the number ofiterations without overshooting the global minimum. To compute, the tagmay calculate partial derivatives of equation 10 with respect to x and yas shown in equations 11 and 12.

$\begin{matrix}{\frac{\partial f}{\partial x_{i}} = \frac{( {{2\sqrt{( {x - x_{i}} )^{2} + ( {y - y_{i}} )^{2}}} - d_{i}} )( {x - x_{i}} )}{\sqrt{( {x - x_{i}} )^{2} + ( {y - y_{i}} )^{2}}}} & {{Equation}11}\end{matrix}$ $\begin{matrix}{\frac{\partial f}{\partial y_{i}} = \frac{( {{2\sqrt{( {x - x_{i}} )^{2} + ( {y - y_{i}} )^{2}}} - d_{i}} )( {y - y_{i}} )}{\sqrt{( {x - x_{i}} )^{2} + ( {y - y_{i}} )^{2}}}} & {{Equation}12}\end{matrix}$

The partial derivatives of Equations 11 and 12 may be used to build theJacobian matrix shown in equation 13. Note that using optimization-basedlocalization, multiple (e.g., all) distances obtained during rangingtransactions with proximate anchor devices may be used. As a result, theresultant Jacobian J includes n sets of partial derivatives, where n isthe number of anchor devices the tag was able to successfully range withduring the last ranging session. As a tag moves within a space, the setof anchor positions and distances may change.

$\begin{matrix}{J = \begin{pmatrix}\frac{\partial f}{\partial x_{1}} & \frac{\partial f}{\partial y_{1}} \\\frac{\partial f}{\partial x_{2}} & \frac{\partial f}{\partial x_{2}} \\\cdots & \cdots \\\frac{\partial f}{\partial x_{n}} & \frac{\partial f}{\partial y_{n}}\end{pmatrix}} & {{Equation}13}\end{matrix}$

An approximation of the Hessian (e.g., second order partial derivatives)may be calculated by taking the transpose of the Jacobian andmultiplying it by the Jacobian as shown in equation 14.

A=H=J ^(T) J  Equation 14

The transpose of the Jacobian J^(T) may then be multiplied by theresidual vector r, calculated in equation 9, which product is shown inequation 15.

B=J ^(T) r  Equation 15

In matrix form, this is in the form of Ax=B, which may be solved todetermine the position offsets for Cartesian locations x and y within{circumflex over ( )}x in the next iteration shown in equation 16.

{circumflex over (x)}=A ⁻¹ B=H ⁻¹ B=(J ^(T) J)⁻¹ J ^(T) r  Equation 16

In this manner, optimization techniques may be used to calculate aposition of a tag based on ranges to the tag, by iteratively evaluatingpossible positions until a constraint on a residual (e.g., minimizing aresidual) is met. Tags described herein may perform theoptimization-based techniques described.

Accurate distance estimation between anchor devices and tags arerelevant to position precision and accuracy. While optimization-basedposition estimation techniques may be more resilient to ranging errorsthan geometric techniques, RF wave propagation through differentmaterials may increase the propagation delay of message transmissions.These may delay results in distance estimation errors between anchordevices and tags, which may result in position errors using ToF-baseddistance estimation techniques. For location tracking applications theseerrors may manifest as tags appearing to move rapidly and randomlywithin a space. In the context of tracking an emergency responsepersonnel's position in real-time to allow commanders or others tomonitor responder movement—random, erratic movement of the trackedlocation may be problematic—particularly for disabled responders instationary positions who may be in need of assistance, for example.

In some examples, tags described herein may utilize a localizationpipeline which utilizes both geometric localization techniques andoptimization-based techniques to calculate a final tag position. Onepath utilizes geometric localization techniques to generate candidateposition(s). Another path utilizes optimization-based techniques,including using the Levenberg Marquardt Algorithm (LMA), to generatecandidate position(s). The two paths use a set of anchor ranges andpositions collected by a tag during ranging transactions. The pipelinemay further utilize adaptive position filtering and errorcharacterization. For example, adaptive position filtering techniquesand/or error characterization may be applied to candidate position(s),which may wholly or partially compensate for ranging errors and generaterefined or updated candidate position(s). Use of such a pipelineapproach may in some examples smooth tag position estimates in thepresence of ranges with errors. Candidate positions may be evaluatedbased on errors associated with the candidate positions. A candidateposition may be selected as the position of the tag based on thecandidate position having a lowest error, or whose error otherwise meetssome error criteria.

FIG. 4 is a schematic illustration of a localization pipeline 400arranged in accordance with examples described herein. The localizationpipeline 400 may be implemented by tags described herein, such as by tag118 of FIG. 1 . For example, the processor(s) 204 of FIG. 2 may performthe calculations used to implement localization pipeline 400. In someexamples, anchor devices described herein may implement localizationpipeline 400 or portions thereof. The localization pipeline 400 includesgeometric localization path 412 and optimization-based localization path416. The localization pipeline 400 includes set of ranges 402 that maybe provided to both geometric localization path 412 andoptimization-based localization path 416. The geometric localizationpath 412 includes device set selection 404, lateration 406, positionfilter 408, and error estimator 410. The optimization-based localizationpath 416 includes position estimation 418, position filter 420, anderror estimator 422. An output of the geometric localization path 412and an output of the optimization-based localization path 416 isprovided to position selection logic 414 to finally determine a positionof the tag or other device implementing localization pipeline 400.Additional, fewer, and/or different components may be used in otherexamples. Note that for spatial convenience in FIG. 4 the notationsrefer to two-dimensional localization without loss of generality—othernumbers of dimensions may be used in other examples.

Each tag may collect, for example, using ranging protocols describedherein, a set of ranges corresponding to ranges between the tag and eachof multiple anchor devices. In FIG. 4 , this set of ranges is depictedas set of ranges 402. The set of ranges 402 may be stored, for example,in a memory of a tag. The set of ranges is represented as R_(ALL).Additionally, the tag may have obtained a set of anchor positioned,which may be reported from the anchor devices and may additionally bestored, for example, in a memory of a tag. The set of anchor devicepositions is represented as P_(ALL) in FIG. 4 . The set of ranges andpositions (represented as tuple {R_(ALL), P_(ALL)} may be provided asinput to the two localization paths—the geometric localization path 412and the optimization-based localization path 416. The geometriclocalization path 412 may be used (e.g., as implemented by processor(s)204 of FIG. 2 ) to calculate a candidate position for the tag usinggeometric localization technique(s). The optimization-based localizationpath 416 may be used (e.g., as implemented by processor(s) 204 of FIG. 2) to calculate a candidate position for the tag using optimization-basedtechnique(s). The multiple candidate positions may be calculated whollyand/or partially in parallel. As shown in FIG. 4 , the geometriclocalization path 412 and optimization-based localization path 416 mayoperate in parallel.

Examples of tags described herein may accordingly implement a geometriclocalization path, such as geometric localization path 412 of FIG. 4 tocalculate a candidate position of the tag using geometric localizationtechniques (e.g., lateration). Referring to geometric localization path412, a set of anchor ranges and positions collected during a set ofranging transactions are provided as input. This is shown in FIG. 4 as{R_(ALL), P_(ALL)}. In some examples, such as example systems with adense deployment of anchor devices, not all ranges and positionscollected during a ranging session may be used for geometricallylocating the tag. In some examples, some combinations of devices may notbe viable or desirable, such as if the positions of those anchors arecollinear when localizing in two dimensions, or co-planar whenlocalizing in three dimensions. Accordingly, the geometric localizationpath 412 may select a subset of anchor devices with valid and/ordesirable range and position data, shown in FIG. 4 as {R_(C), P_(C)}.The selection is made from all available ranges and position data{R_(ALL), P_(ALL)}.

The selection of ranges and positions for use in geometric localizationpath 412 may be made in any of a variety of ways. For example, range andposition date of the closest devices may be used. So, range and positiondata may be selected for a threshold number of devices that have theclosest range to the tag. In some examples, the number selected may bethree for 2D localization, four for 3D localization. In some examples,the standard deviation (or other parameter) of noise in a communicationchannel observed during ranging may be used to select range and positiondata. For example, range and position data may be selected from athreshold number of anchor devices having a lowest amount of noise inthe respective communication channels between the anchor devices and thetag. An initial candidate position for the tag may be calculated usinglateration 406 in the target number of dimensions (e.g., 2 or 3). Theinitial candidate position is represented in FIG. 4 at (x,y)_(GEO).

After an initial candidate position (x, y)_(GEO) is determined usinglateration 406, additional stages may be included in the geometriclocalization path 412. For example, the position estimated vialateration may be evaluated relative to the set of ranges and positionsfor the anchor device {R_(ALL), P_(ALL)}. The evaluation may beperformed by error estimator 410 of FIG. 4 , which may be implemented bya processor, such as processor(s) 204 of FIG. 2 . The error estimator410 uses the initial candidate position input (x, y)_(GEO) as a startingposition and calculates an error (e.g., the sum of squared errors (SSE))for that position. The SSE algorithm may iteratively adapt (x, y)_(GEO)until the error is minimized (or meets another error criteria), asdescribed by equation 10 for example, resulting in a new estimatedcandidate position (x, y)^(EM′) _(GEO), with an associated quantifiederror value E_(GEO) relative to all utilized (e.g., in-range) anchordevices. Starting with the lateration-estimated position may minimizeand/or reduce the number of iterations used by error estimator 410,which may reduce the computational load on tags and prolong batterylife. Leveraging more than the selected number of anchor device rangesand positions (e.g., all available anchor ranges and positions) forerror characterization (e.g. {R_(ALL), P_(ALL)}) rather than the subsetused for lateration ({R_(C), P_(C)}) may further refine the quality ofthe estimated position using more available information.

Examples of geometric techniques used to generate candidate positionsdescribed herein may include the use of smoothing techniques to generatesmoothed candidate positions. Referring to FIG. 4 , concurrent togenerating (x, y)′_(GEO), a position filter 408 may be used. Any of avariety of filters may be used, such as a set of one-dimensional Kalmanfilters. The position filter 408 maybe used to dampen changes to thecandidate position relative to previous positions, which may be due toranging variance caused by obstructions or interference during buildingtraversal. Some examples may utilize one or more Kalman filters whichpredict or project the state of a variable (e.g., position) into thefuture and then use position measurements as feedback. Kalman filtersmay facilitate the incorporation of both process and measurement noiseon the a priori predictions to improve a posteriori state estimates. Thestate of each dimensional position x_(k) may be estimated through thelinear stochastic difference equation shown in equation 17, withmeasurement z_(k) shown in equation 19.

x _(k) =Ax _(k-1) +Bu _(k) +w _(k-1)  Equation 17

x _(k) =x _(k-1) +w _(k-1)  Equation 18

z _(k) =Hx _(k) +v _(k)  Equation 19

In equation 17, position x_(k) is determined by adding the lastestimated position multiplied by matrix A with control input u_(k)multiplied by matrix B and process noise w_(k)−1. Because the signal(e.g., position) is one-dimensional, matrices A and B reduce to singlenumeric values where both are equal to one. Also, because specificcontrol signals may not be exerted on the generated positions, thecontrol input may be set to 0, u_(k)=0. For process noise, a constantvalue may be used. These simplifications reduce equation 17 to equation18.

Equation 19 combines the measured position with measurement noise.Similar to matrices A and B because the signal is one-dimensional,matrix H reduces to a single numeric value of one. To determinemeasurement noise v_(k), the estimated noise from earlier empiricalranging experiments may be used. Given state equations 17 and 19, theKalman filter includes two steps—the time update or predict step andmeasurement update or correction step. The prediction step may bewritten as equations 20 and 21.

x _(k) ⁻ =Ax _(k-1) +Bu _(k)  Equation 20

P _(k) ⁻ =AP _(k-1) A ^(T) +Q  Equation 21

Equation 20 describes the prior state estimate based on the previouswith control signal input. Equation 21 describes the prior errorcovariance. These values may be used in the second, measurement, step ofthe Kalman filter which may be described with equations 22-24.

K _(k) =P _(k) ⁻ H ^(T)(HP _(k) ⁻ H ^(T) +R)⁻¹  Equation 22

Kalman gain K_(k) may be calculated, as shown in equation 22. Thisinvolves multiplying the previous error covariance which was determinedduring the time prediction step in equation 21 divided by the predictederror covariance combined with R, which represents the uncertainty ofmeasurement, which may be due to noise in the environment. Because thesignal is one dimensional and positions do contain noise, H may be takenas equal to one. This reduces the computation of the Kalman gain toequation 23.

$\begin{matrix}{K_{k} = \frac{P_{k}^{-}}{P_{k}^{-} + R}} & {{Equation}23}\end{matrix}$

Given the Kalman gain K_(k) and new position measurement z_(k) obtainedafter ranging and lateration, the a posteriori position estimate x_(k)may be updated to incorporate the latest measurement update. This isshown in equation 24.

x _(k) =x _(k) ⁻ +K _(k)(z _(k) −x _(k) ⁻)  Equation 24

To determine the a posteriori estimated position x_(k), the differencebetween the current measured position z_(k) and the previous estimatedposition may be multiplied by the Kalman gain K_(k), which was computedearlier in equation 23. This result may be added to the previousestimated position x_(k−) as shown in equation 24.

The measurement update phase of the Kalman filter may includerecalculating the uncertainty in the estimate based on a posteriorierror covariance estimate using the updated Kalman gain.

The updated predicted estimates for each positional dimension may becombined using each one-dimensional Kalman filter to generate a newfiltered position, shown as (x, y)′ GEO in FIG. 4 . This position may beused as a starting point in the same SSE-based error estimator describedearlier (e.g., error estimator 410). The output of the error estimatoris a candidate position estimate (x, y)^(EM′) _(GEO) with error valueE′_(GEO). Note that in the ideal case, (x, y)^(EM′) _(GEO) and (x,y)^(EM) _(GEO) may be equal, however in practice, the values may bedifferent. For example, given different starting points, these positionsmay vary with clearly different error values.

In this manner, the geometric localization path 412 may providecandidate position(s) for a tag. In some examples, one candidateposition and an associated error value may be provided based onlateration, and without smoothing. Another candidate position andassociated error value may be provided that may include smoothing (e.g.,using position filter 408). In some examples, only one or the other ofthese candidate values may be generated by geometric localizationtechniques, both may not always be provided. The candidate position(s)generated by the geometric localization path 412 may be provided toposition selection logic 414.

Examples of localization pipelines described herein may include anoptimization-based path for calculating candidate position(s) usingoptimization-based techniques. In the example of FIG. 4 , thelocalization pipeline 400 includes optimization-based localization path416. The optimization-based localization path 416 uses the set of anchorranges and positions (e.g., set of ranges 402) {R_(ALL), P_(ALL)} toestimate tag position. The set of ranges 402 are provided as input tooptimization-based localization path 416. The optimization-basedlocalization path 416 may utilize LMA in position estimation 418 togenerate a candidate position. LMA uses the sum of squared erroralgorithm (SSE) internally. Consequently, the output of positionestimation 418 is a candidate position, shown as (x, y)_(LMA), whichalso includes an error value E_(LMA), associated with the candidateposition. The resultant candidate position may be output directly to theposition selection logic 414 as shown in FIG. 4 .

Additionally in some examples, or instead in some examples, thecandidate position (x, y)_(LMA) may be used as input to a separate setof position filter(s), position filter 420, which may be implementedusing one or more one-dimensional Kalman filters. The same filteringtechniques may be used by position filter 420 as described with respectto position filter 408. For position filter 420, the set of inputs isthe candidate position generated by position estimation 418 (e.g. (x,y)_(LMA)) which yields a new, smoothed candidate position, (x,y)′_(LMA). This new position may then be evaluated by an SSE-based errorestimator, error estimator 422, resulting in position (x, y)^(EM′)_(LMA) with associated error estimate E′_(LMA) that may also be providedas input to position selection logic 414.

Accordingly, an optimization-based localization path, such asoptimization-based localization path 416, may provide one or morecandidate positions based on optimization-based localization techniques.One candidate position is represented as (x,y)_(LMA) in FIG. 4 . Asecond candidate position may be a smoothed version of the initialcandidate position, e.g., (x, y)^(EM′) _(LMA) in FIG. 4 . Both candidatepositions may have associated error values.

In this manner, in the example of FIG. 4 , the position selection logic414 may receive four candidate positions—a candidate position and asmoothed candidate position from both geometric localization path 412and optimization-based localization path 416. Associated errors are alsoreceived for each of the four candidate positions. In other examples,the position selection logic 414 may receive a different number ofcandidate positions, including two candidate positions (one each fromthe geometric localization path 412 and optimization-based localizationpath 416—either the original or smoothed candidates or a mix of both).

The position selection logic 414 of FIG. 4 receives as input four inputtuples including {(x, y)^(EM′) _(GEO), E′_(GEO)}, {(x, y)^(EM) _(GEO),E_(GEO)}, {(x, y)^(EM′) _(LMA), E′_(LMA)}, and {(x, y)_(LMA), E_(LMA)}.After receiving these four tuples, the position selection logic 414compares the error estimates for each, may record the possibilities forlater analysis, and selects the position estimate based on the errorvalues (e.g., selects the candidate position associated with lowesterror). This selected position may be output as the determined, current,tag position (x, y) by the localization pipeline 400. The localizationpipeline 400, including the position selection logic 414 may, forexample, be implemented using tag 118 of FIG. 1 , and may be implementedby the processor(s) 204 of FIG. 2 for example. The determined positionmay be transmitted, e.g., using transceiver(s) 202 of FIG. 2 to anothercomputing device, such as the display device 114 of FIG. 1 .

Examples described herein may include self-localizing anchor devices.For example, the anchor device 106, anchor device 108, anchor device110, and/or anchor device 112 of FIG. 1 may be self-localizing. The useof self-localizing anchor devices may be particularly advantageous inexample where first responders arrive at a scene and desire todynamically deploy a tracking system. Anchor devices described hereinmay include one or more microcontrollers, ultra-wide band transceivers,and/or inertial measurement units (as generally shown in FIG. 2 ) andmay be quickly deployed in an emergency to establish an accurate indoorpositioning system. This design allows each device in a system toindependently determine its location without the need to access aserver, Internet, and/or cloud-based computing device in some examples.

In some examples, anchor devices may be moved during operation of thesystem, either purposefully or accidentally. Examples described hereinmay accordingly include movement detection in anchor devices. This mayallow anchor devices to automatically recognize the need to reevaluateposition before continuing to operate as a reference point within ascene. Moreover, techniques may be used to track tags within a scene(e.g., an indoor space) and allow the translation of localized positions(e.g., indoor positions) into geodetic coordinate systems in realtime.Example systems may be used by firefighters arriving at a building thatis currently on fire, but in other examples, other indoor spaces and/orscenes may be used.

Most indoor positioning systems localize objects using either two orthree dimensional Cartesian coordinate systems. To project the indoorlocations of objects using geodetic coordinate systems, a mappingbetween the coordinate system used within the building and specificlocations of latitude, longitude, and altitude may be established.Example systems described herein may establish this mapping dynamicallyupon deployment using a set of self-localizing anchor devices, in someexamples augmented with high-precision GPS devices.

Some anchor devices may accordingly be referred to as super-beaconswhich may refer to anchor devices that self-localize across both thegeodetic coordinate system and a dynamically instantiated Cartesiancoordinate system. These devices may form the base reference points forthe remainder of the position system and allow for the translation ofCartesian coordinates for all devices within a scene (e.g., a building)to geodetic coordinate systems to provide location visualization usingmapping-based frameworks.

During the initial deployment of anchor devices at a scene, a number ofsuper-beacons may be activated upon arrival. In some examples the anchordevice 108, anchor device 110, anchor device 112, and/or anchor device106 may be super-beacons. In some examples, the super-beacons may bedeployed on or near the fire response equipment outside the scene (e.g.,on the fire truck 120). The initialization sequence for these devices issimilar to regular anchor devices, except that they also initialize anembedded GPS receiver. Unfortunately, the accuracy of mostsingle-channel GPS receivers is limited to within about five meters (16feet). The dynamically deployed indoor localization system should insome examples be capable of centimeter-level precision, however, and theestablishment of the Cartesian system within the building is based onthe accuracy of the position of these super-beacons. Accordingly, insome examples, single-channel GPS receivers may be insufficient orundesirable. To improve precision, each super-beacon may be equippedwith a dual-frequency GPS receiver with the capability to receivedifferential correction signals from nearby base stations. The use ofdual-frequency GPS receivers with augmented real-time kinematics signalsmay facilitate centimeter-level precision of tag location.

After each super-beacon establishes its geodetic location, the Cartesiancoordinate system may be established that will be used while on-sceneand correlate the Cartesian positions of the super-beacons with geodeticlocations. For this, one of the super-beacons may be designated tofunction as the root super-beacon (e.g., anchor device 106). There maybe one such root anchor device and it may have a fixed identifier. Theroot super-beacon establishes the origin of the Cartesian system andinitializes at the origin position of (0, 0, 0). Because the Cartesianlocation of the root super-beacon is predetermined, once initializationis complete, it may transition to operate in anchor mode. Additionally,the geodetic location of the root superbeacon is now correlated to theCartesian origin.

After the other super-beacons are initialized (e.g., anchor device 108,anchor device 110, and/or anchor device 112 of FIG. 1 ), they eachinitiate a ranging transaction, operating analogous to a ranging tagdescribed herein, with the root super-beacon (e.g., anchor device 106).This ranging transaction with the root super-beacon may acquire thegeodetic location of the root super-beacon, as each complete message mayinclude the latitude, longitude, and altitude of the device operating asan anchor. The super-beacons then calculate the difference between thelatitude, longitude, and altitude (converted to meters in some examples)of the root super-beacon and its own geodetic location to establish its(x, y, z) position of the anchor device within the newly establishedCartesian coordinate system. Once each super-beacon has dynamicallydetermined its Cartesian location, it transitions to operate as ananchor (e.g., to serve as a reference point during tagtracking/localization). Subsequent dynamically-deployed anchors can nowrange with the super-anchors as fixed known reference points in thespace. Moreover, because each super-beacon has both a Cartesian positionand a geodetic position, a mapping function may be established toproject the location of tags and anchors with valid Cartesian locationsinto the geodetic space, allowing the use of mapping-based applicationsfor visualizing personnel within a scene.

Self-localizing anchor devices may initially determine their locationbefore responding to ranging requests within a space. Tags range withanchors because they serve as fixed reference points within a space tolocalize. However, unlike statically installed anchors, dynamic anchorsmay not be initially configured with a fixed location within a scene. Toenable self-localization, examples of anchor devices described hereinmay progress through a sequence of initialization states beforeoperationally responding to ranging requests from tags. Additionally, toallow dynamic anchor devices to automatically detect movement andrecalculate position, a state machine may be implemented by anchordevices described herein.

FIG. 5 is a schematic illustration of a state machine for operationalstates of anchor devices arranged in accordance with examples describedherein. The example of FIG. 5 includes an initialization mode 502,discovery mode 504, and ranging mode 506. The diagram of FIG. 5 depictshow the various modes are arrived at and transitioned between. The statemachine of FIG. 5 may be implemented by anchor devices described herein,such as anchor device 106, anchor device 108, anchor device 110, and/oranchor device 112 of FIG. 1 . A processor of the anchor device(s), suchas processor(s) 204 of FIG. 2 may be used to implement the statemachine. Additional, fewer, and/or different states or transitions maybe used in other examples. The state machine of FIG. 5 is intended todepict an example of operational modes used to initializeself-localizing anchor devices upon power-on as well as actions tore-calibrate an anchor's position when movement is detected.

Anchor devices described herein may have an initialization mode, such asinitialization mode 502 of FIG. 5 . When a self-localizing anchor deviceis first powered on, it may transition into initialization, or INIT,mode. In the INIT mode, the anchor device may monitor the movement ofthe device (e.g., using an inertial measurement unit, such as inertialmeasurement unit 208 of FIG. 2 ). As long as the device remains moving,as detected through the accelerometer and gyroscope within the inertialmeasurement unit, for example, the anchor device may remain in the INITmode. This may aid in ensuring that anchor devices powered-on and thenthrown into a scene may delay position calculation until they havereached a stable position within the space (e.g., until they come torest or are stationary). After no additional movement is detected for apredetermined time, the anchor transitions to a discovery mode, shown asdiscovery mode 504 in FIG. 5 .

Anchor devices may self-localize while operating in discovery mode. Totransition into discovery mode, anchors may first have been determinedto be in a stable, e.g., non-moving state. For example, an anchor devicemay be deployed by a first responder by having been dropped on the floorwhile traversing a building. After the device stops moving, it entersdiscovery mode, such as discovery mode 504. In this mode, the anchordevice generally operates as a tag described herein, in that the anchordevice in discovery mode may drives ranging transactions to identify thelocations of other anchor devices and the distances to those anchordevices to determine a position of the anchor device in discovery mode.Ranging techniques, and position determination techniques describedherein, such as with reference to FIG. 3 and FIG. 4 for tags, may beused by the anchor device in discovery mode to determine position of theanchor device.

In examples of positioning systems described herein, it is generallytags that initiate ranging transactions. Anchor devices in operationsimply respond to ranging transaction requests from tags. Because theUWB channel used by all devices may be shared, access to the channel toinitiate ranging transactions may be managed explicitly. In many systemsthis is managed using one of several protocols such as time-divisionmultiple access (TDMA), carrier sensing, or collision detection such asALOHA. In examples described herein, token passing may be used toprovide channel access atomicity, avoiding or reducing collisions duringranging. Static anchors generally will not participate in tokenexchanges as they don't initiate ranging transactions. However, while indiscovery mode, dynamic anchor devices may drive ranging transactionswith anchor devices operating in ranging mode, and therefore mayparticipate in token ring exchanges with tags. Accordingly, tags may beaware of not just other tags in the system, but also of dynamic anchorsthat may utilize the token. This may reduce the available rangingbandwidth within the localization system, but in most cases is limitedto the initialization phase of the system.

After ranging with a sufficient number of nearby anchor devices, dynamicanchor devices estimate their current position using one or more of thelocalization techniques such as lateration or non-linear least squares.In example systems, a combination of these techniques may be used withposition filtering to estimate position. As an initial matter, theanchor device may first acquire a channel lock (e.g., with a token). Inthe token ring approach, the wait time for the lock may be proportionalto the current number of tags and dynamic anchor devices. Afteracquiring the lock, the anchor device may then attempt to range withother known anchor devices. A symmetric two-way ranging protocol, whichrequires an exchange of multiple (e.g., three) messages between theinitiator and each anchor device. The actual distance between devices iscalculated by the anchor device and then sent in a subsequent messageback to the initiator along with the anchor's current Cartesianlocation. If an anchor device does not respond to ranging transactionrequests, it may be assumed to be out of range or inoperable and may notbe used further. After ranging with all known anchor devices, thechannel access lock may be freed by passing the token onto the nextinitiator device in the ring.

Given ranges to anchor devices, along with current anchor devicelocations, a device selection algorithm may be used to identifycandidate anchor devices to use for estimating position geometrically,e.g., through trilateration. In some examples, a number (e.g., three) ofthe closest anchors to estimate position of the anchor device that is indiscovery mode. The anchor device may calculate a sum of squared errorfor the position estimated through the geometric technique using theanchor devices with non-zero ranges.

After estimating its position, self-localizing anchor devices transitionto ranging mode, such as ranging mode 506 of FIG. 5 . However, if theanchor device detects that it has moved, it may transition back toinitialization mode. Accordingly, if the anchor device is moved, forexample kicked after being dropped or moved by nearby rescue equipmentsuch as a hose, the operating state of the anchor device may betransitioned back to initialization mode 502 as shown in FIG. 5 . Inthis manner, inaccurate ranges may be avoided due to unexpected movementof an anchor device. Recall that during ranging transactions, the anchorpositions are encoded into the ranging protocol in addition to therange, as they may be used for localization. If an anchor device ismoved into a new position and continues to range, the actual range maybe accurate, but the position would be stale. Consequently, when anincorrect position and range for even a single anchor is used toestimate the position of a tag, the calculated position may beincorrect. Consequently, it may be advantageous that if an anchor ismoved, its position is reevaluated to prevent errors in tag positionestimates.

Once a dynamic anchor device has determined its current position, it maytransition into ranging mode, e.g., ranging mode 506 of FIG. 5 . Inranging mode, anchor devices may place their transceiver (e.g., UWBtransceiver) into receive mode and wait until an initial rangingmessage, with a matching destination address, is received (e.g., from atag). The anchor device then may follow the same ranging protocol usedfor statically placed anchors and/or described herein with reference toFIG. 3 . However, if movement is detected at any time while operating inranging mode, the anchor device may transition back into initializationmode as shown in FIG. 5 .

From the foregoing it will be appreciated that, although specificembodiments have been described herein for purposes of illustration,various modifications may be made while remaining with the scope of theclaimed technology.

Examples described herein may refer to various components as “coupled”or signals as being “provided to” or “received from” certain components.It is to be understood that in some examples the components are directlycoupled one to another, while in other examples the components arecoupled with intervening components disposed between them. Similarly,signal may be provided directly to and/or received directly from therecited components without intervening components, but also may beprovided to and/or received from the certain components throughintervening components.

What is claimed is:
 1. A system comprising: a plurality of anchordevices, each comprising: a transceiver; an inertial measurement unitconfigured to monitor movement of the anchor device; a processor coupledto the transceiver and configured to self-localize a respective anchordevice to determine a position of the respective anchor devices, theprocessor further coupled to the inertial measurement unit andconfigured to determine a position of the anchor device when it isstationary; and a tag comprising: a tag transceiver configured tocommunicate with the plurality of anchor devices; and a tag processorcoupled to the tag transceiver and configured to determine a position ofthe tag using the respective positions of the plurality of anchordevices, the tag processor configured to calculate multiple candidatepositions using geometric localization techniques, optimizationtechniques, smoothing techniques, or combinations thereof and errorsassociated with each of the multiple candidate positions; the tagprocessor further configured to select the position of the tag based onthe errors associated with each of the multiple candidate positions, 2.The system of claim 1, further comprising: a display device incommunication with the tag and configured to display an indication ofthe tag in accordance with the position.
 3. The system of claim 2,wherein the display device is configured to display the position of thetag together with a floorplan of a building in which the tag isdeployed.
 4. The system of claim 1, wherein the plurality of anchordevices are each configured to self-localize responsive to adetermination that a respective anchor device is stationary.
 5. Thesystem of claim 1, wherein the tag processor is configured to determinea first candidate position of the tag using a geometric localizationtechnique and a second candidate position of the tag using anoptimization technique.